== Sample 4

This sample demonstrates non-blocking retry (`@RetryableTopic`) with a simple producer and consumer; the producer sends Strings posted to the rest controller.

Strings starting with `fail` are rejected and retried.

Run the application and use curl to send some data:

`$ curl -X POST http://localhost:8080/send/fail; curl -X POST http://localhost:8080/send/good`

Console:

[source, bash]
----

2021-05-11 16:17:55.372  INFO 75520 --- [ fooGroup-0-C-1] com.example.Application : Received: fail from topic4 @ xx

2021-05-11 16:17:55.399  INFO 75520 --- [ fooGroup-0-C-1] com.example.Application : Received: good from topic4 @ xx

2021-05-11 16:17:57.384  INFO 75520 --- [etry-2000-0-C-1] com.example.Application : Received: fail from topic4-retry-2000 @ xx

2021-05-11 16:18:01.390  INFO 75520 --- [etry-4000-0-C-1] com.example.Application : Received: fail from topic4-retry-4000 @ xx

2021-05-11 16:18:09.399  INFO 75520 --- [etry-8000-0-C-1] com.example.Application : Received: fail from topic4-retry-8000 @ xx

2021-05-11 16:18:19.407  INFO 75520 --- [try-10000-0-C-1] com.example.Application : Received: fail from topic4-retry-10000 @ xx

2021-05-11 16:18:19.918  INFO 75520 --- [Group-dlt-0-C-1] com.example.Application : DLT Received: fail from topic4-dlt @ xx
----

As you can see the "good" record is processed while the failed record is retried by the series of retry topics.
